home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / gkismet / PowerBox.pm < prev    next >
Text File  |  2005-10-20  |  3KB  |  127 lines

  1. #!/usr/bin/perl -w
  2. #
  3. # $Id: PowerBox.pm,v 1.16 2005/04/12 02:50:01 solovam Exp $
  4. #
  5. # This file is a part of gkismet
  6. #
  7. # This program is free software; you can redistribute it and/or
  8. # modify it under the terms of the GNU General Public License
  9. # as published by the Free Software Foundation; either version 2
  10. # of the License, or (at your option) any later version.
  11. #
  12. # This program is distributed in the hope that it will be useful,
  13. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15. # GNU General Public License for more details.
  16. #
  17. # You should have received a copy of the GNU General Public License
  18. # along with this program; if not, write to the Free Software
  19. # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  20. #
  21.  
  22. #
  23. # PowerBox class
  24. #
  25. package PowerBox;
  26.  
  27. use Gtk;
  28. use Misc;
  29. use ReusableConnObserver;
  30. use strict;
  31. @PowerBox::ISA = qw(ReusableConnObserver);
  32.  
  33. my %maxValues = (cardpower => 256, cardnoise => 256);
  34. my %minValues = (cardpower => 0, cardnoise => 0);
  35.  
  36. #
  37. # Constructor
  38. #
  39. sub new
  40. {
  41.     my $type = shift;
  42.     my $self = new ReusableConnObserver(@_);
  43.     bless $self, $type;
  44.  
  45.     my $hbox = new Gtk::HBox($true, 0);
  46.     for my $val (qw(cardpower cardnoise))
  47.     {
  48.         my $adjustment = new Gtk::Adjustment($minValues{$val}, $minValues{$val}, $maxValues{$val}, 0, 0, 0);
  49.         my $bar = new_with_adjustment Gtk::ProgressBar($adjustment);
  50.         $self->{$val . 'ProgressBar'} = $bar;
  51.         $bar->set_orientation('bottom_to_top');
  52.         $bar->set_show_text($false);
  53.         $bar->set_format_string('  %v  ');
  54.         $hbox->pack_start($bar, $true, $false, 5);
  55.     }
  56.  
  57.     my $frame = new Gtk::Frame(undef);
  58.     $frame->set_label('Card power');
  59.     $frame->add($hbox);
  60.     my $outerBox = new Gtk::HBox($false, 0);
  61.     $self->{'outerBox'} = $outerBox;
  62.     $outerBox->pack_start($frame, $true, $false, 0);
  63.     $outerBox->show_all();
  64.  
  65.     return $self;
  66. }
  67.  
  68. #
  69. # Handle an update from an observable
  70. #
  71. sub update
  72. {
  73.     my $self = shift;
  74.     my $object = shift;
  75.     my $data = shift;
  76.  
  77.     if($object->isa('Connection') && defined $self->{'connection'} && $self->{'connection'} eq $object)
  78.     {
  79.         if($data->{'changed'} eq 'info')
  80.         {
  81.             for my $val (qw(cardpower cardnoise))
  82.             {
  83.                 $self->{$val . 'ProgressBar'}->set_show_text($true);
  84.                 my $level = $self->{'connection'}->getInfo()->{$val};
  85.                 if($level < 0)
  86.                 {
  87.                     $level += 256;
  88.                 }
  89.                 my $prc = ($level - $minValues{$val}) / ($maxValues{$val} - $minValues{$val});
  90.                 if($prc > 1)
  91.                 {
  92.                     $prc = 1;
  93.                 }
  94.                 if($prc < 0)
  95.                 {
  96.                     $prc = 0;
  97.                 }
  98.                 $self->{$val . 'ProgressBar'}->update($prc);
  99.             }
  100.         }
  101.     }
  102. }
  103.  
  104. #
  105. # Flush screen data
  106. #
  107. sub flush
  108. {
  109.     my $self = shift;
  110.     for my $val (qw(cardpower cardnoise))
  111.     {
  112.         $self->{$val . 'ProgressBar'}->set_show_text($false);
  113.         $self->{$val . 'ProgressBar'}->update(0);
  114.     }
  115. }
  116.  
  117. #
  118. # Get Gtk widget
  119. #
  120. sub getWidget
  121. {
  122.     my $self = shift;
  123.     return($self->{'outerBox'});
  124. }
  125.  
  126. 1;
  127.